関連する C++クラス: CClusterElementArray
v1.0
Cluster オブジェクトClusterまたはClusterPropertyオブジェクト上のクラスタエレメントのコレクションです。
このオブジェクトに保存されているデータの用途は、オブジェクトが Cluster または ClusterProperty
のどちらに存在するのかにより異なります。
Cluster.Elements(およびEnvelope.Elements)によって戻される
ClusterElementCollection は、クラスタ内コンポーネントのインデックスとGeometryのコンポーネントのインデックス間のマッピングを可能にします。たとえば、ポリゴン
Cluster のインデックス 10 は、ジオメトリ上の Polygon
45を参照し、ClusterElementCollection.Item(10)は値45を持ちます。このフィールドは読み取り専用です。
特定のジオメトリコンポーネントがクラスタの一部であるかどうかを調べる場合は、この配列内を検索できます。ただし、Cluster.FindIndexを使用する方が便利で効率的です。
一方、ClusterProperty.Elements(またはEnvelope.Weights)によって戻される
ClusterElementCollection は、ClusterProperty
の実際のデータに対して読み取り/書き込みのアクセス権を与えます。たとえば、Vertex Color
プロパティには、各コンポーネントに保存されている RGB 値に対するアクセス権が与えられます。この場合、1D は RGB
値に対応し、サイズ3を持ちます。2D はコンポーネントのインデックスに対応します。値は常にDouble値で表されます。
' ' This example demonstrates how to read and write the values on ' a weight map, using the ClusterElementCollection object. ' It also demonstrates how the indices on the cluster property ' correspond to the indices of the cluster, but that these indices do ' not directly correspond to the indices on the geometry. NewScene ,false set oSphere = ActiveSceneRoot.AddGeometry("Sphere","NurbsSurface") ' Create a weight map on a cluster that includes only a subset of the points set oCluster = oSphere.ActivePrimitive.Geometry.AddCluster( _ siVertexCluster, "MyFrontPoints", Array( 18,19,20,25,26,27) ) CreateWeightMap , oCluster.FullName, "MyWeightMap" set oWM = oCluster.LocalProperties( "MyWeightMap" ) ' Use the ClusterElementCollection.Array to access all the weights in a ' single 2-dimensional array ElArray = oWM.Elements.Array ' Set the weight on second item in the cluster, (which is point 19), to 100 ElArray(0,1) = 100 ' Set the weight on point 25 to 99 ElArray(0,3) = 99 ' Copy our altered array of values back onto the weight map oWM.Elements.Array = ElArray ' Use ClusterElementCollection.Item to set an individual weight on the ' Weight Map. Notice how it is still using an array 'Create a 1 Dimensional array with 1 element dim myWeight(0) myWeight(0) = 10 'Assign the value oWM.Elements.Item( 2 ) = myWeight 'Print out the contents set oCluster = oWM.Parent for i = 0 to oWM.Elements.Count - 1 indexOnGeometry = oCluster.Elements.Item(i) logmessage "Weight at " & i & " (pnt" & indexOnGeometry & _ ") is " & oWM.Elements.Item(i)(0) next 'Output of running this script is: 'INFO : "Weight at 0 (pnt18) is 1" 'INFO : "Weight at 1 (pnt19) is 100" 'INFO : "Weight at 2 (pnt20) is 10" 'INFO : "Weight at 3 (pnt25) is 99" 'INFO : "Weight at 4 (pnt26) is 1" 'INFO : "Weight at 5 (pnt27) is 1" |